package com.tuozixuan.codedemo.java9.flow;

import java.util.concurrent.Flow;
import java.util.concurrent.Flow.Subscription;

/**
 * 负责订阅消费数据
 *
 */
public class IntSubscriber implements Flow.Subscriber<Integer> {

	/**
	 * 订阅成功后触发，并且表明可以开始接收订阅数据了
	 */
	@Override
	public void onSubscribe(Subscription subscription) {
		subscription.request(10);
	}

	/**
	 * 获取接受数据的下一项
	 */
	@Override
	public void onNext(Integer item) {
		System.out.println("订阅者接收数据: " + item);
	}

	/**
	 * 在发布者或订阅遇到错误时触发
	 */
	@Override
	public void onError(Throwable throwable) {
		 System.out.println("订阅者接收数据出现异常：" + throwable);
	}

	/**
	 * 接受完所有的数据后触发
	 */
	@Override
	public void onComplete() {
		 System.out.println("订阅完成");
	}

}
